package com.xoa.controller.url;

import com.xoa.model.url.Url;
import com.xoa.model.users.Users;
import com.xoa.service.url.UrlService;
import com.xoa.util.CookiesUtil;
import com.xoa.util.ToJson;
import com.xoa.util.common.session.SessionUtils;
import com.xoa.util.dataSource.ContextHolder;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 创建作者:   张丽军
 * 创建日期:   2017年6月20日 下午9:42:39
 * 类介绍  :    个人地址
 * 构造参数:    无
 */


@Controller
@RequestMapping("/controlpanel")
public class UrlController {

    private Logger loger = Logger.getLogger(UrlController.class);

    @Resource
    private UrlService urlService;

    @RequestMapping("/index")
    public String url() {
        return "/app/url/index";
    }

    @RequestMapping("/urlAdress")
    public String urlAdress() {
        return "/app/url/urlAdress";
    }

    @RequestMapping("/safelog")
    public String safelog() {
        return "/app/url/safelog";
    }

    @RequestMapping("/adressList")
    public String list() {
        return "/app/url/adressList";
    }

    @RequestMapping("/desktop")
    public String desktop() {
        return "/app/url/desktop";
    }

    @RequestMapping("/editAdress")
    public String edit() {
        return "/app/url/editAdress";
    }

    @RequestMapping("/editUserExtPage")
    public String editUserExtPage() {
        return "/app/url/editUserExt";
    }

    @RequestMapping("/customEdit")
    public String customEdit() {
        return "/app/url/customEdit";
    }

    @RequestMapping("/form")
    public String form() {
        return "/app/url/form";
    }

    //lr 修改印章密码
    @RequestMapping("/updateSealPass")
    public String updateSealPass() {
        return "/app/url/updateSealPass";
    }

    //常用应用设置
    @RequestMapping("/commonSettings")
    public String commonSettings() {
        return "/app/url/commonSettings";
    }

    /**
     * 创建作者:   张丽军
     * 创建日期:   2017年6月21日 上午9:42:39
     * 类介绍  :   个人地址添加信息
     * 构造参数:
     */

    @ResponseBody
    @RequestMapping(value = "/addUrl", produces = {"application/json;charset=UTF-8"})
    public ToJson<Url> addUrl(HttpServletRequest request, Url url) {
        Cookie redisSessionCookie = CookiesUtil.getCookieByName(request, "redisSessionId");
        String loginDateSouse = SessionUtils.getSessionInfo(request.getSession(), "loginDateSouse", String.class, redisSessionCookie);
        ContextHolder.setConsumerType("xoa" + loginDateSouse);
        ToJson<Url> json = new ToJson<Url>(1, "error");
        try {
            urlService.addUrl(url, request);

            json.setObject(url);
            json.setMsg("ok");
            json.setFlag(0);
        } catch (Exception e) {
            e.printStackTrace();
            json.setMsg("数据错误");
            json.setFlag(1);
        }
        return json;
    }


    /**
     * 创建作者:   张丽军
     * 创建日期:   2017年6月21日 上午9:42:39
     * 类介绍  :   个人网址信息查询
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping(value = "/selectUrl")
    public ToJson<Url> selectUrl(HttpServletRequest request) {
        Cookie redisSessionCookie = CookiesUtil.getCookieByName(request, "redisSessionId");
        String loginDateSouse = SessionUtils.getSessionInfo(request.getSession(), "loginDateSouse", String.class, redisSessionCookie);
        ContextHolder.setConsumerType("xoa" + loginDateSouse);
        ToJson<Url> json = new ToJson<Url>(1, "error");
        Users users = SessionUtils.getSessionInfo(request.getSession(), Users.class, new Users(), redisSessionCookie);
        String user = users.getUserId();
        try {
            Url url = new Url();
            url.setUser(user);
            List<Url> list = urlService.selectData(url);
            if (list.size() > 0) {
                json.setObj(list);
                json.setMsg("ok");
                json.setFlag(0);
            } else {
                json.setMsg("数据为空");
                json.setFlag(0);
            }
        } catch (Exception e) {
            e.printStackTrace();
            json.setMsg(e.getMessage());
        }
        return json;
    }

    /**
     * 创建作者:   张丽军
     * 创建日期:   2017年6月21日 上午9:42:39
     * 类介绍  :   个人网址单条信息查询
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping(value = "/getUrlById")
    public Url selectUrlById(HttpServletRequest request, Integer urlId) {
        return urlService.selectByUrlId(request, urlId);
    }

    /**
     * 创建作者:   张丽军
     * 创建日期:   2017年6月21日 上午9:42:39
     * 类介绍  :   个人网址信息根据ID删除一条信息
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping(value = "/deleteUrl")
    public ToJson<Url> deleteUrl(@RequestParam("urlId") Integer urlId, HttpServletRequest request) {
        Cookie redisSessionCookie = CookiesUtil.getCookieByName(request, "redisSessionId");
        String loginDateSouse = SessionUtils.getSessionInfo(request.getSession(), "loginDateSouse", String.class, redisSessionCookie);
        ContextHolder.setConsumerType("xoa" + loginDateSouse);
        ToJson<Url> json = new ToJson<Url>(1, "error");
        loger.debug("message" + urlId);
        try {
            urlService.deleteData(urlId);
            json.setMsg("ok");
            json.setFlag(0);
            return json;
        } catch (Exception e) {
            e.printStackTrace();
            json.setMsg(e.getMessage());
            json.setFlag(1);
        }
        return json;
    }

    /**
     * 创建作者:   张丽军
     * 创建日期:   2017年6月21日 上午9:42:39
     * 类介绍  :   个人网址信息删除全部信息
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping(value = "/deleteAll")
    public ToJson<Url> deleteAll(HttpServletRequest request, Url url) {
        Cookie redisSessionCookie = CookiesUtil.getCookieByName(request, "redisSessionId");
        String loginDateSouse = SessionUtils.getSessionInfo(request.getSession(), "loginDateSouse", String.class, redisSessionCookie);
        ContextHolder.setConsumerType("xoa" + loginDateSouse);
        ToJson<Url> json = new ToJson<Url>(1, "error");
        try {
            urlService.deleteAll();
            json.setMsg("ok");
            return json;
        } catch (Exception e) {
            e.printStackTrace();
            json.setMsg(e.getMessage());
        }
        return json;
    }

    /**
     * 创建作者:   张丽军
     * 创建日期:   2017年6月21日 上午9:42:39
     * 类介绍  :   个人网址信息修改
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping(value = "/updateUrl")
    public ToJson<Url> updateUrl(Url url, HttpServletRequest request) {
        Cookie redisSessionCookie = CookiesUtil.getCookieByName(request, "redisSessionId");
        String loginDateSouse = SessionUtils.getSessionInfo(request.getSession(), "loginDateSouse", String.class, redisSessionCookie);
        ContextHolder.setConsumerType("xoa" + loginDateSouse);
        ToJson<Url> json = new ToJson<Url>(0, null);
        try {
            urlService.updateUrl(url);
            json.setObject(url);
            json.setMsg("ok");
            json.setFlag(0);
        } catch (Exception e) {
            e.printStackTrace();
            json.setMsg(e.getMessage());
            json.setFlag(1);
        }
        return json;
    }
}
